package com.mdd.car.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.mdd.car.entity.vehicle.Vehicle;
import com.mdd.car.params.vehicle.VehicleCreateValidate;
import com.mdd.car.params.vehicle.VehicleSearchValidate;
import com.mdd.car.params.vehicle.VehicleUpdateStatusValidate;
import com.mdd.car.params.vehicle.VehicleUpdateValidate;
import com.mdd.car.vo.vehicle.VehicleDetailVo;
import com.mdd.car.vo.vehicle.VehicleVo;
import com.mdd.common.base.page.PageValidate;
import com.mdd.common.core.PageResult;
import com.mdd.system.vo.SystemAuthAdminInformVo;

/**
 * 车辆服务接口类
 * @author LikeAdmin
 */
public interface IVehicleService extends IService<Vehicle> {

    /**
     * 车辆列表
     *
     * @author LikeAdmin
     * @param pageValidate 分页参数
     * @param searchValidate 搜索参数
     * @return PageResult<VehicleListedVo>
     */
    PageResult<VehicleVo> list(PageValidate pageValidate, VehicleSearchValidate searchValidate, SystemAuthAdminInformVo systemAuthAdmin);

    /**
     * 待绑定车辆列表
     * @param pageValidate
     * @param searchValidate
     * @return
     */
    PageResult<VehicleVo> unBindList(PageValidate pageValidate, VehicleSearchValidate searchValidate,SystemAuthAdminInformVo systemAuthAdmin);

    /**
     * 车辆详情
     *
     * @author LikeAdmin
     * @param id 主键ID
     * @return VehicleDetailVo
     */
    VehicleDetailVo detail(Long id);

    /**
     * 车辆新增
     *
     * @author LikeAdmin
     * @param createValidate 参数
     */
    void add(VehicleCreateValidate createValidate);

    /**
     * 车辆编辑
     *
     * @author LikeAdmin
     * @param updateValidate 参数
     */
    void edit(VehicleUpdateValidate updateValidate);

    /**
     * 更新车辆状态
     * @param updateStatusValidate
     */
    void updateStatus(VehicleUpdateStatusValidate updateStatusValidate);

    /**
     * 车辆删除
     *
     * @author LikeAdmin
     * @param id 主键ID
     */
    void del(Long id);

}
